import { getWaterData, getLast7DaysData, getNext7DaysData, getAllPointQuality } from '@/api/waterAnalysis'

export default {
    state: {
        // 复合水质数据图表展示的数据
        chartWaterData: {
            illumination: [],
            ph: [],
            temperature: [],
            turbidity: [],
            humidity: [],
            date: [],
        },
        // 7天表格展示的数据，包含了日期，各种预警次数
        dateCountTable: [],
        // 水质情况区域分布
        regionalData: []
    },
    actions: {
        // 获取最新的水质检测数据（实时同步的初始化）
        togetWaterData({ commit }) {
            getWaterData().then(res => {
                commit('setWaterData', res)
            }).catch(err => {
                console.log(err);
            })
        },
        // 获取最近7天的水质数据
        toGetLast7DaysData({ commit }) {
            getLast7DaysData().then(data => {
                commit('Last7DaysData', data)
            }).catch(err => {
                console.log(err);
            })
        },
        // 获取某一天的所有水质数据
        togetSomeDatData({ commit }) {
            getWaterData().then(res => {
                commit('setWaterData', res)
            }).catch(err => {
                console.log(err);
            })
        },
        // 获取某天未来7天的水质数据
        toGetNext7DaysData({ commit }, data) {
            getNext7DaysData(data).then(res => {
                commit('Last7DaysData', res)
            }).catch(err => {
                console.log(err);
            })
        },
        // 获取水质区域数据
        toGetAllPointQuality({ commit }) {
            getAllPointQuality().then(res => {
                commit('setRegionalData', res)
            }).catch(err => {
                console.log(err);
            })
        }
    },
    mutations: {
        // 储存水质区域数据
        setRegionalData(state, data) {
            state.regionalData = data;
        },
        // 储存当前的水质数据
        setWaterData(state, data) {
            let dataSet = state.chartWaterData;
            for (let item in data) {
                dataSet.date.unshift(data[item].time);
                dataSet.temperature.unshift(data[item].wTemp);
                dataSet.ph.unshift(data[item].ph);
                dataSet.turbidity.unshift(data[item].zuodu);
                dataSet.humidity.unshift(data[item].hum);
                dataSet.illumination.unshift(data[item].light);
            }
        },
        // 储存获取7天的数据表格
        Last7DaysData(state, data) {
            for (let i = 0; i < data.length; i++) {
                data[i].total = (data[i].light + data[i].ph + data[i].temp + data[i].zuodu + data[i].tds);
            }
            state.dateCountTable = data;
        },
    },
    getters: {
        // 用于折线图的展示：7天警报次数总和
        lineChartData(state) {
            let count = {
                time: [],
                total: []
            };
            state.dateCountTable.map(item => {
                count.time.push(item.time);
                count.total.unshift(item.total);
            })
            return count;
        },
        // 用于饼图的展示：类型占比
        pieChartData(state) {
            let data = [
                { value: 0, name: "ph值" },
                { value: 0, name: "水温" },
                { value: 0, name: "浊度" },
                { value: 0, name: "光照" },
                { value: 0, name: "TDS" },
            ];
            state.dateCountTable.map(item => {
                data[0].value += item.ph;
                data[1].value += item.temp;
                data[2].value += item.zuodu;
                data[3].value += item.light;
                data[3].value += item.tds;
            })
            return data
        }
    }
}